package com.zjj.learn.javaplus.pkg05.demo501;


import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;

public class TestDemo501_1 {


    public static void main(String[] args) {
        System.out.println("main 线程开启");

        Thread t1 = new Thread("t1") {
            @Override
            public void run() {
                System.out.println("开启了一个新线程");
            }
        };
        t1.start();

        //使用 Runnable 接口定义线程得我执行目标
        Runnable runnable = new Runnable() {

            @Override
            public void run() {
                System.out.println("使用 Runnable 执行线程");
            }
        };
        //开启一个新线程，执行 Runnable 中的run方法
        new Thread(runnable).start();


        // Callable 需要与 FutureTask 一起使用
        Callable<String> callable = new Callable<String>() {
            @Override
            public String call() throws Exception {
                System.out.println("只用 Callable 定义线程执行方法");
                return "callable 返回";
            }
        };
        FutureTask<String> task = new FutureTask(callable);
        task.run();

    }

    /**
     * 自定义线程
     *
     **/
}
